package chapter9.section9;

//程序9-13c Clerk的拦截器类
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class ClerkHandler implements InvocationHandler {
	private BankService clerk;

	public ClerkHandler(BankService clerk) {
		this.clerk = clerk;
	}

	@Override
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		String id = (String) args[0];
		System.out.println("你可以在目标方法执行前做些处理, 如检查id的合法性");
		Object result = method.invoke(clerk, args);// 继续执行被代理对象的原方法
		System.out.println("你也可以在方法执行后做些后续处理,甚至修改返回结果");
		return result;// 返回给调用者的结果
	}
}